트리 순회

📔 문제 설명

이진 트리를 표현한 배열 nodes를 인자로 받습니다. 예를 들어서 nodes가 [1,2,3,4,5,6,7]이면 다음과 같은 트리를 표현한 것입니다. 해당 이진 트리에 대하여 전위 순회, 중위 순회, 후위 순회 결과를 반환하는 solution() 함수를 구현하세요.

📓 제약 조건

입력 노드값의 개수는 1개 이상 1000개 이하이다.
노드값은 정수형이며, 중복되지 않는다.

📓 입출력의 예

nodes return
[1,2,3,4,5,6,7] ["1 2 3 4 5 6 7","4 2 5 1 6 3 7","4 5 2 6 7 3 1"]

❗ 1번째

이 문제는 전위 , 중위 , 후위 순회가 어떤식으로 이루어지는지 트리 순회에 대한 기초적인 개념을 바탕으로 생각하여 코드를 짜는 문제다.

✅ 실행 코드

function 전위순회(nodes,i){
	if(i < nodes.length){
		let r = `${nodes[i]} `;
		r += 전위순회(nodes, i * 2 + 1);
		r += 전위순회(nodes, i * 2 + 2);
		return r;
	}
	return "";
}

function 중위순회(nodes,i){
	if(i < nodes.length){
		let r = 중위순회(nodes,i * 2 + 1)
		r += `${nodes[i]} `;
		r += 중위순회(nodes,i * 2 + 2);
		return r;
	}
	return "";
}

function 후위순회(nodes,i){
	if(i < nodes.length){
		let r = 후위순회(nodes,i * 2 + 1);
		r += 후위순회(nodes,i * 2 + 2);
		r += `${nodes[i]}`
		return r
	}
	return "";
}

function solution(nodes){
 return[
	전위순회(nodes,0).slice(0,-1),
	중위순회(nodes,0).slice(0,-1),
	후위순회(nodes,0).slice(0,-1),
 ]
}

📚 문제 느낀점

순위를 들으면 어떤식으로 순회가 되는지 알고는 있었지만 막상 이걸 구현을 할려니 막혀서 책을 보면서 하나하나 다시 되짚어 봤습니다.
이를 바탕으로 한번 약했던 트리문제도 잘 풀어보겠습니다


© 문제 출처

저자 출제